package com.kly.api.ai.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class GetImageOutPaintingResponse {
    @JsonProperty("output")
    private Task output; // 任务信息

    @JsonProperty("request_id")
    private String requestId; // 请求唯一标识

    @JsonProperty("usage")
    private Usage usage; // 图像统计信息

    // 嵌套类：任务信息
    @Data
    public static class Task {
        @JsonProperty("task_id")
        private String taskId; // 任务ID

        @JsonProperty("task_status")
        private TaskStatus taskStatus; // 任务状态（枚举）

        @JsonProperty("task_metrics")
        private TaskMetrics taskMetrics; // 任务结果统计

        @JsonProperty("submit_time")
        private String submitTime; // 任务提交时间

        @JsonProperty("scheduled_time")
        private String scheduledTime; // 任务调度时间

        @JsonProperty("end_time")
        private String endTime; // 任务完成时间

        @JsonProperty("output_image_url")
        private String outputImageUrl; // 输出图像URL

        @JsonProperty("code")
        private String code; // 错误码（仅失败时存在）

        @JsonProperty("message")
        private String message; // 错误信息（仅失败时存在）
    }

    // 枚举：任务状态
    public enum TaskStatus {
        PENDING, // 任务排队中
        RUNNING, // 任务处理中
        SUSPENDED, // 任务挂起
        SUCCEEDED, // 任务执行成功
        FAILED, // 任务执行失败
        UNKNOWN // 任务不存在或状态未知
    }

    // 嵌套类：任务结果统计
    @Data
    public static class TaskMetrics {
        @JsonProperty("TOTAL")
        private int total; // 总任务数

        @JsonProperty("SUCCEEDED")
        private int succeeded; // 成功任务数

        @JsonProperty("FAILED")
        private int failed; // 失败任务数
    }

    // 嵌套类：图像统计信息
    @Data
    public static class Usage {
        @JsonProperty("image_count")
        private int imageCount; // 生成图片数量
    }
}